const http = require('http');
const fs = require('fs');
const path = require('path');

// 定义文件的根目录
const rootDir = path.resolve(__dirname, '../static');
// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
    // 从请求的 URL 中获取文件路径
    const filePath = path.join(rootDir, req.url);
    // 检查文件是否存在并且是一个文件
    fs.stat(filePath, (err, stats) => {
        if (err || !stats.isFile()) {
            res.statusCode = 404;
            res.end('File not found');
            return;
        }

        // 读取并返回文件内容
        fs.readFile(filePath, (err, data) => {
            if (err) {
                res.statusCode = 500;
                res.end('Internal server error');
                return;
            }

            // 设置正确的 Content-Type
            res.setHeader('Content-Type', getContentType(filePath));
            res.statusCode = 200;
            res.end(data);
        });
    });
});

// 启动服务器并监听端口
const port = 3000;
server.listen(port, () => {
    console.log(`File proxy server is running at http://localhost:${port}/`);
});

// 根据文件扩展名设置正确的 Content-Type
function getContentType(filePath) {
    const ext = path.extname(filePath).toLowerCase();
    switch (ext) {
        case '.html':
            return 'text/html';
        case '.js':
            return 'application/javascript';
        case '.css':
            return 'text/css';
        case '.json':
            return 'application/json';
        case '.png':
            return 'image/png';
        case '.jpg':
        case '.jpeg':
            return 'image/jpeg';
        case '.gif':
            return 'image/gif';
        default:
            return 'application/octet-stream';
    }
}
